﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel.DataAnnotations;
using Csla;
using Csla.Serialization;
using log4net;

namespace Sireass.Bl
{
	[Serializable]
	public class UnidadResponsableInfo : ReadOnlyBase<UnidadResponsableInfo>
	{
		#region Propiedades
		// Create a logger for use in this class
		private static readonly ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

		public static readonly PropertyInfo<long> IdUnidadResponsableProperty = RegisterProperty<long>(c => c.IdUnidadResponsable);
		public long IdUnidadResponsable
		{
			get { return GetProperty(IdUnidadResponsableProperty); }
			private set { LoadProperty(IdUnidadResponsableProperty, value); }
		}

		public static readonly PropertyInfo<string> UnidadResponsableProperty = RegisterProperty<string>(c => c.UnidadResponsable);
		[Display(Name = "Unidad Responsable")]
		public string UnidadResponsable
		{
			get { return GetProperty(UnidadResponsableProperty); }
			private set { LoadProperty(UnidadResponsableProperty, value); }
		}

		public static readonly PropertyInfo<bool> HabilitadoProperty = RegisterProperty<bool>(c => c.Habilitado);
		[Display(Name = "Habilitado")]
		public bool Habilitado
		{
			get { return GetProperty(HabilitadoProperty); }
			private set { LoadProperty(HabilitadoProperty, value); }
		}

		public static readonly PropertyInfo<DateTime> FechaAltaProperty = RegisterProperty<DateTime>(c => c.FechaAlta);
		[Display(Name = "Fecha Alta")]
		public DateTime FechaAlta
		{
			get { return GetProperty(FechaAltaProperty); }
			private set { LoadProperty(FechaAltaProperty, value); }
		}

		public static readonly PropertyInfo<DateTime> FechaBajaProperty = RegisterProperty<DateTime>(c => c.FechaBaja);
		[Display(Name = "Fecha Baja")]
		public DateTime FechaBaja
		{
			get { return GetProperty(FechaBajaProperty); }
			private set { LoadProperty(FechaBajaProperty, value); }
		}

        public static readonly PropertyInfo<string> CargoProperty = RegisterProperty<string>(c => c.Cargo);
        [Display(Name = "Cargo")]
        public string Cargo
        {
            get { return GetProperty(CargoProperty); }
            private set { LoadProperty(CargoProperty, value); }
        }

        public static readonly PropertyInfo<string> EscuelaProperty = RegisterProperty<string>(c => c.Escuela);
        [Display(Name = "Escuela")]
        public string Escuela
        {
            get { return GetProperty(EscuelaProperty); }
            private set { LoadProperty(EscuelaProperty, value); }
        }
		#endregion

		#region Data Portal
		private void Child_Fetch(System.Data.IDataReader data)
		{
			var safeData = new Csla.Data.SafeDataReader(data);
			IdUnidadResponsable = safeData.GetInt64("nId_UnidadResponsable");
			UnidadResponsable = safeData.GetString("cUnidadResponsable");
            Escuela = safeData.GetString("cEscuela");
            Cargo = safeData.GetString("cCargoGral");
			Habilitado = safeData.GetBoolean("bHabilitado");
			FechaAlta = safeData.GetDateTime("dFecha_Alta");
			FechaBaja = safeData.GetDateTime("dFecha_Baja");
		}
		#endregion
	}
}
